// #[cfg(desktop)]
// mod tray;

// 自定义窗口
// #[cfg(desktop)]
// mod commands;

// 导入 commands 模块中的函数
// use crate::commands::create_window;
// use crate::commands::exist_file;
// use crate::commands::exit_app;
// use crate::commands::mkdir_file;
// use crate::commands::remove_file;

mod start;
// use start::{set_complete, setup, SetupState};
use start::setup;
// use std::sync::Mutex;
use tauri::{async_runtime::spawn, Manager, WindowBuilder, WindowUrl};

#[tauri::command]
fn handle_window_event(event: String) {
    println!("Received window event: {}", event);
}
// 新增窗口控制命令
#[tauri::command]
async fn resize_window(app: tauri::AppHandle, width: f64, height: f64) -> Result<(), String> {
    let window = app.get_window("main").ok_or("找不到主窗口")?;

    window
        .set_size(tauri::Size::Logical(tauri::LogicalSize { width, height }))
        .map_err(|e| e.to_string())?;

    window.center().map_err(|e| e.to_string())?;
    Ok(())
}

#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
    tauri::Builder::default()
        .plugin(tauri_plugin_log::Builder::new().build())
        .plugin(tauri_plugin_updater::Builder::new().build())
        .plugin(tauri_plugin_process::init())
        .plugin(tauri_plugin_websocket::init())
        .plugin(tauri_plugin_notification::init())
        .plugin(tauri_plugin_shell::init())
        .plugin(tauri_plugin_window_state::Builder::new().build())
        .plugin(tauri_plugin_fs::init())
        .plugin(tauri_plugin_upload::init())
        .plugin(tauri_plugin_sql::Builder::new().build())
        .plugin(tauri_plugin_http::init())
        .plugin(tauri_plugin_dialog::init())
        .plugin(tauri_plugin_os::init())
        .plugin(tauri_plugin_opener::init())
        // .manage(Mutex::new(SetupState {
        //     frontend_task: false,
        //     backend_task: false,
        // }))
        // 添加自定义托盘
        // .setup(|app| {
        //     #[cfg(all(desktop))]
        //     {
        //         let handle: &tauri::AppHandle = app.handle();
        //         tray::create_tray(handle)?;
        //     }
        //     Ok(())
        // })
        // 启动动画
        .setup(|app| {
            // 显式创建主窗口
            let _main_window =
                WindowBuilder::new(app, "main", WindowUrl::App("/index.html".into()))
                    .inner_size(350.0, 475.0)
                    .center()
                    .resizable(false) // 禁止用户手动调整
                    .build()
                    .expect("主窗口创建失败");
            //  启动初始化任务
            spawn(setup(app.handle().clone()));
            Ok(())
        })
        // 注册 Rust 后端函数，暴露给前端调用
        .invoke_handler(tauri::generate_handler![
            // create_window,
            // exist_file,
            // remove_file,
            // mkdir_file,
            // exit_app,
            // set_complete,
            handle_window_event,
            resize_window // 新增命令
        ])
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

// greet 为前端调用函数
// .plugin(tauri_plugin_opener::init()) 注册了 shell 插件(必选)
// .invoke_handler(tauri::generate_handler![greet]) 注册了 greet 函数，使得前端可以调用, 多个使用,分割
// run 为程序入口
// rust后端定义了command必须经过注册，前端才可以使用
